import axios from 'axios'
import { message } from 'element-ui'
import webConfig from '../../config/config'
import store from '@/store'
const ERR_CODE_LIST = { //常见错误码列表
    [400]: "请求错误",
    [401]: "登录失效",
    [403]: "拒绝访问",
    [404]: "请求地址出错",
    [405]: "服务器程序",
    [408]: "请求超时",
    [500]: "服务器内部错误",
    [501]: "服务未实现",
    [502]: "网关错误",
    [503]: "服务不可用",
    [504]: "网关超时",
    [505]: "HTTP版本不受支持"

};

//前缀

axios.defaults.baseURL = webConfig.apiUrl;
axios.interceptors.request.use(
    (config) => {
        // console.log(config.headers);
        config.headers['token'] = store.getters.token;
        config.headers['from'] = 'exchangeCode';
        // do something before request is sent
        if (store.getters.token) {
            //config.headers['Authorization'] = 'Bearer ' + store.getters.token
        }
        return config
    },
    (error) => {
        // do something with request error
        return Promise.reject(error)
    }
)
// //异步请求返回统一处理
axios.interceptors.response.use(async (response) => {

        if(response.config.url=='/api/phoneLogin'){
            return response.data
        }
        if(response.config.url=='/api/exportFile'){
            return response.data
        }
        if (response.data.code !== 0) { // 服务端返回的状态码不等于200，则reject()
            message.error(response.data.errMsg||response.data.msg);
            return;
        }
        return response.data.data;
    },
    (error) => {
        console.log(error);
        // let errorMessage = error.response.data.message ? error.response.data.message : error.response.statusText
        // // 错误代码 422，laravel validate返回
        // if (error.response.status === 422 && error.response.data.hasOwnProperty('errors')) {
        //     for (let key in error.response.data.errors) {
        //         let items = error.response.data.errors[key]
        //         if (typeof items === 'string') {
        //             errorMessage = `${items} `
        //             break;
        //         } else {
        //             try {
        //                 error.response.data.errors[key].forEach(item => {
        //                     errorMessage=`${item}`;
        //                     throw new Error(errorMessage);
        //                 })
        //             } catch (e) {
        //                 message.error(errorMessage);
        //                 throw e;
        //
        //             }
        //         }
        //     }
        // }
        return Promise.reject(error);
    }
);

export {
    axios
}
